1. Field of the Invention
The present invention generally relates to data processing and, more particularly, to intelligent software agents.
2. Description of the Related Art
The automation of tedious and complex tasks has long been a goal of computer science. In this regard, intelligent agents have attracted significant attention in recent years. Generally, an agent is a computer system or software program that supports a user with accomplishment of some task or activity. Intelligent software agents may be characterized as long-running processes that monitor information concerning their environment via events or polling, process that information using procedural or declarative domain knowledge, and then take actions to respond to situations detected in their environment.
Agents have found utility in a variety of environments. For example, on the Internet, an agent is a program that gathers information or performs some other service on a regular schedule and without the immediate presence of a human user. Typically, an agent program, using parameters provided by a user, searches all or some part of the Internet gathering information of interest to the user, and then presents it to the user on a periodic basis. A particular example of an agent is the email reminder service that alerts the user about news on specified topics of interest. A number of similar agents compare shopping prices and bring the news back to the user. Other types of agents include specific site watchers that tell users when the site has been updated or look for other events and analyst agents that not only gather but also organize and interpret information.
In a commercial multiagent system application, hundreds or thousands of software agents could be running at one time. When managing a large number of systems, an administrator depends on these agents to take action. However, the administrator must maintain some degree of interaction (i.e., control over and communication with) with the agents. Interaction is needed to allow observation of an agent's behavior, to prevent agents from performing undesired actions, and to facilitate changes to the agents, if needed. These needs must be met without sacrificing the utility of the agent.
However, the conventional agent lifecycle does not provide the degree of interaction necessary to achieve the foregoing needs. A conventional agent lifecycle includes training, start up and interaction, problem identification and problem resolution. An agent is typically trained using a set of data or encoded rules. The agent is then invoked (e.g., instantiated) and allowed to interact with its environment according to the data or rules. Upon identifying a problem the agent either asks permission of a user to fix the problem, or attempt to fix the problem automatically. The information relating to the problem and its resolution may be logged.
The current approaches to problem identification and resolution using agents are problematic. Specifically, if the agent is configured to ask permission to fix the problem, the agent is suspended from performing its functions until the user provides an answer. No mechanism exists for allowing the agent to continue its functions pending an answer from the user. If the agent is configured to fix the problem automatically (i.e., without requesting explicit permission from the user upon identification of the problem), the agent may pursue a solution which is later considered to be undesirable by the user (e.g., the course of action taken by the agent failed to adequately solve the problem, and/or had destructive results). In addition, the only remedy to prevent a reoccurrence under similar circumstances is to take the agent off-line and retrain it. The success of a retraining effort depends, of course, upon the user's understanding of the problem and the circumstances giving rise to the problem. For this understanding, the user may resort to the log in which the problem is recorded. However, the log provides little more than a top-level generalization of the problem and is, therefore, of little value to a user seeking a more comprehensive understanding of the problem.
Therefore, there is a need for agents capable of more efficient problem resolution.